 $(document).ready(function() {
	 // 在 document.ready 函数内添加以下代码

	 // 1. 检查URL参数并弹出登录框
	 const urlParams = new URLSearchParams(window.location.search);
	 if (urlParams.get('showLogin') === 'true') {
	     showLoginPopup(); // 调用显示登录弹窗函数
	 }

	 $(document).ajaxError(function(event, jqXHR) {
	     if (jqXHR.status === 401) { // 未授权状态码
	         showLoginPopup(); // 显示登录弹窗
	     }
	 });
 })

// 存储当前登录状态和用户信息
       
     // 初始化页面
        document.addEventListener('DOMContentLoaded', () => {
        	renderRecommendVideos();
        	selectVideoCount(videoId);
        	 // 1. 缓存DOM元素
	         initDOMCache();
        });
        
        let currentUser = null;
        let videoId = localStorage.getItem('pendingVideoId');
//      页面加载时读取 
        playVideo(videoId);
        function playVideo(videoId){
        	$.ajax({
        		type:"GET",
        		url:"selectVideo.do",
        		data:{
        			action:"get",
        			videoId:videoId
        		},
        		
        		success:function(data){
        			console.log(data);
        			switchVideo(data);
        		}
        	})
        }
        
        const mainVideo = document.getElementById('mainVideo');
        const videoTitle = document.getElementById('videoTitle');
        const videoDescription = document.getElementById('videoDescription');
        const recommendVideoList = document.getElementById('recommendVideoList');
        let spans=$(".video-meta span");
        let btns=$(".action-buttons button");
        let att = btns.eq(0)//关注按钮
        queryAttention(videoId)
        function queryAttention(videoId){
        	$.ajax({
        		url:"queryAttention.do",
        		type:"post",
        		data:{
        			videoId:videoId
        		},
        		success:function(data){
        			if(data.code == 200){
        				att.text("已关注")
        				att.addClass("primary")
        			}
        		}
        	
        	})
        }
        att.click(function(){
			if(att.hasClass("primary")){
				removeAttention()
			}else{
				addAttention()
			}
        })
        
        function addAttention(){
        	$.ajax({
        		url:"clickAttention",
        		type:"post",
        		data:{
        			action:"add",
        			videoId:videoId
        		},
        		success:function(data){
        			if(data.code == 200){
    					att.text("已关注")
        				att.addClass("primary")
        			}
        		}
        	})
        }
        function removeAttention(){
        	$.ajax({
        		url:"clickAttention",
        		type:"post",
        		data:{
        			action:"remove",
        			videoId:videoId
        		},
        		success:function(data){
        			if(data.code == 200){
        				if(att.hasClass("primary")){
	        				att.text("关注")
	        				att.removeClass("primary")
        				}
        			}
        		}
        	})
        }
        //const v zideos=new Array();
//        var coincount="";//视频投币量
     // =============================
     // 渲染推荐视频系统模块
     // =============================
        function renderRecommendVideos(){
        	$.ajax({
        		type:"GET",
        		url:"selectVideo.do",
        		success:function(data){
        			console.log(data);
                    data.forEach(function(video){
                        const item = document.createElement('div');
                        item.className = 'recommend-item';
                        item.dataset.id = video.videoId;
                        const totalTime=formatTime(video.duration);
                        item.innerHTML = `
                            <div class="recommend-thumbnail">
                            
                                <img src="${video.coverUrl}" alt="${video.title}">
                                <span style="position: absolute; bottom: 2px; right: 2px; background-color: rgba(0, 0, 0, 0.7); color: white; font-size: 10px; padding: 1px 3px; border-radius: 2px;">${totalTime}</span>
                            </div>
                            <div class="recommend-info">
                                <div class="recommend-title">${video.title}</div>
                                <div class="recommend-meta">
                                    <span>${video.nickname}</span>
                                    <span>${video.viewCount}</span>
                                </div>
                            </div>
                        `;
                        item.addEventListener('click', () => switchVideo(video));
                        recommendVideoList.appendChild(item);
                    })
                    
                }
        	})
        }
        
        //转换视频的收藏 点赞 播放 投币 数量
        function formatToTenThousand(num) {
            if (num >= 10000) {
                return num/10000+"万";
            }
            return num;
        }
       
        // 切换视频函数
        function switchVideo(video) {
            // 更新主播放器源
        	mainVideo.src = video.videoUrl;
            mainVideo.poster = video.coverUrl;

            // 更新视频信息
            videoTitle.textContent = video.title;
            videoDescription.textContent = video.description;
            spans[4].textContent = video.createTime;
            
            // 高亮当前选中项
            document.querySelectorAll('.recommend-item').forEach(item => {
            	item.classList.toggle('active', item.dataset.id == video.videoId);
               
            });
            
            // 重新加载并播放（根据需求）
            mainVideo.load();
            mainVideo.play().catch(e => console.log("自动播放被阻止:", e));
        }
//        // 初始化页面
//        document.addEventListener('DOMContentLoaded', () => {
//        	renderRecommendVideos();
//            
//            // 默认选中第一个视频
//            //if(videos.length > 0) switchVideo(videos[0]);
//        });
        
	     // =============================
	     // DOM元素缓存模块
	     // =============================
	     const domElements = {
	         // 评论系统元素
	         commentForm: null,
	         commentInput: null,
	         sendCommentBtn: null,
	         commentList: null,
	         
	         // 用户认证元素
	         userAvatar: null,
	         loginOverlay: null,
	         loginBtn: null,
	         registerBtn: null,
	         usernameInput: null,
	         passwordInput: null,
	         errorMsg: null,
	         
	         // 视频播放元素
	         video: null,
	         playPauseBtn: null,
	         progressContainer: null,
	         progressBar: null,
	         currentTimeEl: null,
	         durationEl: null,
	         volumeContainer: null,
	         volumeBar: null,
	         volumeBtn: null,
	         qualitySelect: null,
	         controlBar: null,
	         speedBtn: null,
	         fullscreenBtn: null,
	         
	         // 弹幕元素
	         danmakuLayer: null,
	         danmakuInput: null,
	         danmakuBtn: null
	     };

	     // =============================
	     // 应用初始化模块
	     // =============================
	   
	
	     // 初始化DOM元素缓存
	     function initDOMCache() {
	         // 评论系统元素
	         domElements.commentForm = document.querySelector('.comment-form');
	         domElements.commentInput = document.querySelector('.comment-input');
	         domElements.sendCommentBtn = document.getElementById('sendComment');
	         domElements.commentList = document.getElementById('commentList');
	         
	         // 用户认证元素
	         domElements.userAvatar = document.getElementById('userAvatar');
	         domElements.loginOverlay = document.getElementById('loginOverlay');
	         domElements.loginBtn = document.getElementById('loginBtn');
	         domElements.registerBtn = document.getElementById('registerBtn');
	         domElements.usernameInput = document.getElementById('username');
	         domElements.passwordInput = document.getElementById('password');
	         domElements.errorMsg = document.getElementById('errorMsg');
	         
	         // 视频播放元素
	         domElements.video = document.getElementById('mainVideo');
	         domElements.playPauseBtn = document.getElementById('playPauseBtn');
	         domElements.progressContainer = document.getElementById('progressContainer');
	         domElements.progressBar = document.getElementById('progressBar');
	         domElements.currentTimeEl = document.getElementById('currentTime');
	         domElements.durationEl = document.getElementById('duration');
	         domElements.volumeContainer = document.getElementById('volumeContainer');
	         domElements.volumeBar = document.getElementById('volumeBar');
	         domElements.volumeBtn = document.getElementById('volumeBtn');
	         domElements.qualitySelect = document.getElementById('qualitySelect');
	         domElements.controlBar = document.getElementById('controlBar');
	         domElements.speedBtn = document.getElementById('speedBtn');
	         domElements.fullscreenBtn = document.getElementById('fullscreenBtn');
	         
	         // 弹幕元素
	         domElements.danmakuLayer = document.getElementById('danmakuLayer');
	         domElements.danmakuInput = document.getElementById('danmakuInput');
	         domElements.danmakuBtn = document.getElementById('danmakuBtn');
	     }
	     
        const video = document.getElementById('mainVideo');
        const playPauseBtn = document.getElementById('playPauseBtn');
        const progressContainer = document.getElementById('progressContainer');
        const progressBar = document.getElementById('progressBar');
        const currentTimeEl = document.getElementById('currentTime');
        const durationEl = document.getElementById('duration');
        const volumeContainer = document.getElementById('volumeContainer');
        const volumeBar = document.getElementById('volumeBar');
        const volumeBtn = document.getElementById('volumeBtn');
        const danmakuLayer = document.getElementById('danmakuLayer');
        const danmakuInput = document.getElementById('danmakuInput');
        const danmakuBtn = document.getElementById('danmakuBtn');
        const qualitySelect = document.getElementById('qualitySelect');
        const controlBar = document.getElementById('controlBar');
        const speedBtn = document.getElementById('speedBtn'); // 新增倍速按钮
        const fullscreenBtn = document.getElementById('fullscreenBtn'); // 新增全屏按钮
        // ========== 基础播放控制 ==========
        playPauseBtn.addEventListener('click', () => {
            video.paused ? video.play() : video.pause();
        });
        video.addEventListener('play', () => playPauseBtn.textContent = '⏸');
        video.addEventListener('pause', () => playPauseBtn.textContent = '▶');

        // ========== 进度条控制 ==========
        video.addEventListener('timeupdate', () => {
            const progress = (video.currentTime / video.duration) * 100;
            progressBar.style.width = `${progress}%`;
            currentTimeEl.textContent = formatTime(video.currentTime);
            durationEl.textContent = formatTime(video.duration);
        });
        progressContainer.addEventListener('click', (e) => {
            const progress = (e.offsetX / progressContainer.offsetWidth) * video.duration;
            video.currentTime = progress;
        });

        // ========== 音量控制（新增滚轮调节） ==========
        volumeContainer.addEventListener('click', (e) => {
            const volume = e.offsetX / volumeContainer.offsetWidth;
            video.volume = Math.max(0, Math.min(1, volume)); // 限制0-1范围
        });
        video.addEventListener('volumechange', () => {
            volumeBar.style.width = `${video.volume * 100}%`;
            volumeBtn.textContent = video.volume > 0 ? '🔊' : '🔇';
        });
        // 滚轮调节音量（PC端）
        video.addEventListener('wheel', (e) => {
            e.preventDefault();
            const delta = e.deltaY > 0 ? -0.1 : 0.1;
            video.volume = Math.max(0, Math.min(1, video.volume + delta));
        });

        // ========== 弹幕功能 ==========
        danmakuBtn.addEventListener('click', () => {
            danmakuInput.style.display = danmakuInput.style.display === 'block' ? 'none' : 'block';
        });
        
     // 声明全局变量：用户输入的弹幕内容
        let content;
        
        // 添加事件监听
        danmakuInput.addEventListener('keypress', (e) => {
            if (e.key === 'Enter' && danmakuInput.value.trim()) {
            	
            	const userId = localStorage.getItem('userId');
            	
                // 给全局变量content赋值
                content = danmakuInput.value;
                $.ajax({
            		type:"POST",
            		url:"insertDanmu.do",
            		data:{
            			videoId:videoId,
            			userId:userId,
            			content:content
            		},
            	dataType:"text"
            	})
                addDanmaku(danmakuInput.value);
                danmakuInput.value = '';
            }
        });
        
        function addDanmaku(text) {
            const danmaku = document.createElement('div');
            danmaku.className = 'danmaku-item';
            danmaku.textContent = text;
            danmaku.style.top = `${Math.random() * 80 + 10}%`; // 随机垂直位置（10%-90%）
            danmakuLayer.appendChild(danmaku);
            setTimeout(() => danmaku.remove(), 10000); // 10秒后自动清理
        }

        // ========== 画质切换 ==========
        qualitySelect.addEventListener('change', (e) => {
            const newSource = Array.from(video.children).find(
                source => source.dataset.quality === e.target.value
            );
            video.src = newSource.src;
            video.load(); // 重新加载视频源
            video.play(); // 加载后自动播放
        });

        // ========== 倍速播放（新增） ==========
        let currentSpeed = 1.0;
        const speedOptions = [0.5, 0.75, 1.0, 1.25, 1.5, 2.0];
        speedBtn.addEventListener('click', () => {
            const currentIndex = speedOptions.indexOf(currentSpeed);
            const nextIndex = (currentIndex + 1) % speedOptions.length;
            currentSpeed = speedOptions[nextIndex];
            video.playbackRate = currentSpeed;
            speedBtn.textContent = `${currentSpeed}x`;
        });

        // ========== 全屏功能（新增） ==========
        fullscreenBtn.addEventListener('click', () => {
            const player = document.querySelector('.bili-player');
            if (document.fullscreenElement) {
                // 退出全屏
                document.exitFullscreen();
                fullscreenBtn.textContent = '🗖';
            } else {
                // 进入全屏（兼容不同浏览器）
                if (player.requestFullscreen) player.requestFullscreen();
                else if (player.mozRequestFullScreen) player.mozRequestFullScreen();
                else if (player.webkitRequestFullscreen) player.webkitRequestFullscreen();
                fullscreenBtn.textContent = '🗗'; // 切换为退出图标
            }
        });

        // ========== 控制条自动隐藏（优化） ==========
        let controlBarTimer;
        document.addEventListener('mousemove', (e) => {
            const playerRect = document.querySelector('.bili-player').getBoundingClientRect();
            // 仅当鼠标在播放器区域内时显示控制条
            if (e.clientX > playerRect.left && e.clientX < playerRect.right && 
                e.clientY > playerRect.top && e.clientY < playerRect.bottom) {
                controlBar.style.opacity = '1';
                clearTimeout(controlBarTimer);
                controlBarTimer = setTimeout(() => {
                    controlBar.style.opacity = '0.8';
                }, 3000); // 3秒无操作后淡化
            }
        });

        // ========== 键盘快捷键（新增） ==========
        document.addEventListener('keydown', (e) => {
            if (e.code === 'Space') { // 空格控制播放/暂停
                e.preventDefault();
                video.paused ? video.play() : video.pause();
            }
            if (e.code === 'ArrowLeft') video.currentTime -= 5; // 左箭头回退5秒
            if (e.code === 'ArrowRight') video.currentTime += 5; // 右箭头快进5秒
            // if (e.code === 'KeyF') fullscreenBtn.click(); // F键全屏
        });

        document.addEventListener('keydown', (e) => {
            // 检测Ctrl+F组合键 (Mac兼容Command+F)
            if ((e.ctrlKey || e.metaKey) && e.key.toLowerCase() === 'f') {
                e.preventDefault();
                if (video) {
                     // 检查是否已全屏
                    if (!document.fullscreenElement) {
                    video.requestFullscreen();
                    } else {
                        document.exitFullscreen();
                    }
                } else {
                    console.warn('未找到视频元素');
                }
            }
        });

        // 工具函数：格式化时间（00:00） 工具函数模块
        function formatTime(seconds) {
            if (isNaN(seconds) || !isFinite(seconds)) return '00:00';
            
            const minutes = Math.floor(seconds / 60);
            const secs = Math.floor(seconds % 60);
            return `${pad(minutes)}:${pad(secs)}`;
        }

        function pad(num) {
        	// 补零处理，确保秒数总是两位数
            return num.toString().padStart(2, '0');
        }
        
        // 动态查询视频所有内容通过视频id
        selectVideoCount(videoId);
        function selectVideoCount(videoId){ 
        	let viewCount=spans.eq(0);//视频播放量
        	let likeCount=spans.eq(1);//视频点赞量
        	let collectCount=spans.eq(2);//视频收藏量
        	let clicklike=btns.eq(1);// 点赞按钮
        	let collectlike=btns.eq(2);// 收藏按钮
        	
        	$.ajax({
        		type:"GET",
        		url:"selectVideoCount.do",
        		data:{
        			videoId:videoId
        		},
        		success:function(data){
        			upId=data.uploaderId;
        			viewCount.html(`<svg class="view-icon" style="width:20px;height:20px;" data-v-aed3e268="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 20 20" width="20" height="20"><path d="M10 4.040041666666666C7.897383333333334 4.040041666666666 6.061606666666667 4.147 4.765636666666667 4.252088333333334C3.806826666666667 4.32984 3.061106666666667 5.0637316666666665 2.9755000000000003 6.015921666666667C2.8803183333333333 7.074671666666667 2.791666666666667 8.471183333333332 2.791666666666667 9.998333333333333C2.791666666666667 11.525566666666668 2.8803183333333333 12.922083333333333 2.9755000000000003 13.9808C3.061106666666667 14.932983333333334 3.806826666666667 15.666916666666667 4.765636666666667 15.744683333333336C6.061611666666668 15.849716666666666 7.897383333333334 15.956666666666667 10 15.956666666666667C12.10285 15.956666666666667 13.93871666666667 15.849716666666666 15.234766666666667 15.74461666666667C16.193416666666668 15.66685 16.939000000000004 14.933216666666667 17.024583333333336 13.981216666666668C17.11975 12.922916666666667 17.208333333333332 11.526666666666666 17.208333333333332 9.998333333333333C17.208333333333332 8.470083333333333 17.11975 7.073818333333334 17.024583333333336 6.015513333333334C16.939000000000004 5.063538333333333 16.193416666666668 4.329865000000001 15.234766666666667 4.252118333333334C13.93871666666667 4.147016666666667 12.10285 4.040041666666666 10 4.040041666666666zM4.684808333333334 3.255365C6.001155 3.14862 7.864583333333334 3.0400416666666668 10 3.0400416666666668C12.13565 3.0400416666666668 13.999199999999998 3.148636666666667 15.315566666666667 3.2553900000000002C16.753416666666666 3.3720016666666672 17.890833333333333 4.483195 18.020583333333335 5.925965000000001C18.11766666666667 7.005906666666667 18.208333333333336 8.433 18.208333333333336 9.998333333333333C18.208333333333336 11.56375 18.11766666666667 12.990833333333335 18.020583333333335 14.0708C17.890833333333333 15.513533333333331 16.753416666666666 16.624733333333335 15.315566666666667 16.74138333333333C13.999199999999998 16.848116666666666 12.13565 16.95666666666667 10 16.95666666666667C7.864583333333334 16.95666666666667 6.001155 16.848116666666666 4.684808333333334 16.7414C3.2467266666666665 16.624750000000002 2.1092383333333338 15.513266666666667 1.9795200000000002 14.070383333333334C1.8823900000000002 12.990000000000002 1.7916666666666667 11.562683333333334 1.7916666666666667 9.998333333333333C1.7916666666666667 8.434066666666666 1.8823900000000002 7.00672 1.9795200000000002 5.926381666666667C2.1092383333333338 4.483463333333334 3.2467266666666665 3.371976666666667 4.684808333333334 3.255365z" fill="currentColor"></path><path d="M12.23275 9.1962C12.851516666666667 9.553483333333332 12.851516666666667 10.44665 12.232683333333332 10.803866666666666L9.57975 12.335600000000001C8.960983333333335 12.692816666666667 8.1875 12.246250000000002 8.187503333333334 11.531733333333333L8.187503333333334 8.4684C8.187503333333334 7.753871666666667 8.960983333333335 7.307296666666667 9.57975 7.66456L12.23275 9.1962z" fill="currentColor"></path></svg>&nbsp;${formatToTenThousand(data.viewCount)}`);
        			likeCount.html(`<svg width="20" height="20" viewBox="0 0 36 36" xmlns="http://www.w3.org/2000/svg" class="video-like-icon video-toolbar-item-icon"><path fill-rule="evenodd" clip-rule="evenodd" d="M9.77234 30.8573V11.7471H7.54573C5.50932 11.7471 3.85742 13.3931 3.85742 15.425V27.1794C3.85742 29.2112 5.50932 30.8573 7.54573 30.8573H9.77234ZM11.9902 30.8573V11.7054C14.9897 10.627 16.6942 7.8853 17.1055 3.33591C17.2666 1.55463 18.9633 0.814421 20.5803 1.59505C22.1847 2.36964 23.243 4.32583 23.243 6.93947C23.243 8.50265 23.0478 10.1054 22.6582 11.7471H29.7324C31.7739 11.7471 33.4289 13.402 33.4289 15.4435C33.4289 15.7416 33.3928 16.0386 33.3215 16.328L30.9883 25.7957C30.2558 28.7683 27.5894 30.8573 24.528 30.8573H11.9911H11.9902Z" fill="currentColor"></path></svg>&nbsp;${formatToTenThousand(data.likeCount)}`);
        			collectCount.html(`<svg width="20" height="20" viewBox="0 0 28 28" xmlns="http://www.w3.org/2000/svg" class="video-fav-icon video-toolbar-item-icon" data-v-5f171eb7=""><path fill-rule="evenodd" clip-rule="evenodd" d="M19.8071 9.26152C18.7438 9.09915 17.7624 8.36846 17.3534 7.39421L15.4723 3.4972C14.8998 2.1982 13.1004 2.1982 12.4461 3.4972L10.6468 7.39421C10.1561 8.36846 9.25639 9.09915 8.19315 9.26152L3.94016 9.91102C2.63155 10.0734 2.05904 11.6972 3.04049 12.6714L6.23023 15.9189C6.96632 16.6496 7.29348 17.705 7.1299 18.7605L6.39381 23.307C6.14844 24.6872 7.62063 25.6614 8.84745 25.0119L12.4461 23.0634C13.4276 22.4951 14.6544 22.4951 15.6359 23.0634L19.2345 25.0119C20.4614 25.6614 21.8518 24.6872 21.6882 23.307L20.8703 18.7605C20.7051 17.705 21.0339 16.6496 21.77 15.9189L24.9597 12.6714C25.9412 11.6972 25.3687 10.0734 24.06 9.91102L19.8071 9.26152Z" fill="currentColor"></path></svg>&nbsp;${formatToTenThousand(data.collectCount)}`);
        			clicklike.text(`点赞 (${formatToTenThousand(data.likeCount)})`);
        			collectlike.text(`收藏 (${formatToTenThousand(data.collectCount)})`);
        		}
        	})
        }
      
        var clickTimer = null;//计时器 用于判定用户是否取消点赞或收藏
        var clickCount = 0;// 记录用户是双击还是单击（1表示喜欢/收藏，2表示不喜欢/取消收藏）
        // 点赞按钮
        btns.eq(1).on('click', function() {
            clickCount++;
            let $btn = $(this); // 保存jQuery对象
            if (clickCount === 1) {
                // 第一次点击，等待可能的第二次点击
                clickTimer = setTimeout(function() {
                    if (clickCount === 1) {
                    	if(!$btn.hasClass("primary")){
                    		likeVideo("likeCount",parseCountText($btn.text())); // 单击点赞
                    	}
                    }
                    clickCount = 0; // 重置计数
                }, 300); // 300ms 内无第二次点击则视为单击
            } else if (clickCount === 2) {
            	// 双击取消
            	if($btn.hasClass("primary")){
	                clearTimeout(clickTimer); // 清除单击的计时器
	                unlikeVideo("likeCount",parseCountText($(this).text())); // 双击取消点赞
	                clickCount = 0; // 重置计数
            	}
            }
        });
        checkFavoriteVideo()
        function checkFavoriteVideo(){
        	$.ajax({
        		url:"queryUserFavoriteVideo.do",
        		type:"post",
        		data:{
        			videoId:videoId
        		},
        		success:function(data){
        			if(data.code == 200){
        				btns.eq(2).addClass("primary")
        			}else{
        				btns.eq(2).removeClass("primary")
        			}
        		}
        	})
        }
        // 收藏按钮
        btns.eq(2).on('click', function() {
            clickCount++;
            let $btn = $(this); // 保存jQuery对象
            if (clickCount === 1) {
                // 第一次点击，等待可能的第二次点击
                clickTimer = setTimeout(function() {
                    if (clickCount === 1) {
                    	if(!$btn.hasClass("primary")){
                    		favoriteVideo("collectCount",parseCountText($btn.text())); // 单击收藏
                    		clickCount = 0; // 重置计数
                    	}
                    }
                }, 300); // 300ms 内无第二次点击则视为单击
            } else if (clickCount === 2) {
//                // 双击取消
            	if($btn.hasClass("primary")){
	                clearTimeout(clickTimer); // 清除单击的计时器
	                unfavoriteVideo("collectCount",parseCountText($(this).text())); // 双击取消收藏
	                clickCount = 0; // 重置计数
            	}
            }
        });
        
        function likeVideo(name,num) {
        	const videoId = localStorage.getItem('pendingVideoId');
        	if (!videoId) {
                alert('视频ID不存在，操作失败');
                return;
            }
            $.ajax({
            	type:"GET",
            	url:"updateVideoCount",
            	data:{
        			[name]:num,
        			videoId:videoId,
        			clickCount:clickCount,
        			action:"clickLike"
        		},
        		success:function(data){
	        			selectVideoCount(videoId);
	        			btns.eq(1).addClass("primary")
        		}
            })
        }
        
        function unlikeVideo(name,num) {
        	const videoId = localStorage.getItem('pendingVideoId');
        	if (!videoId) {
                alert('视频ID不存在，操作失败');
                return;
            }
            $.ajax({
            	type:"GET",
            	url:"updateVideoCount",
            	data:{
        			[name]:num,
        			videoId:videoId,
        			clickCount:clickCount,
        			action:"cancelClickLike"
        		},
        		success:function(data){
            			selectVideoCount(videoId);
            			btns.eq(1).removeClass("primary")
        		}
            })
        }
        
     // 收藏功能
        function favoriteVideo(name,num) {
            // 这里可以发送AJAX请求到后端
            const videoId = localStorage.getItem('pendingVideoId');
        	if (!videoId) {
                alert('视频ID不存在，操作失败');
                return;
            }
            $.ajax({
            	type:"GET",
            	url:"updateVideoCount",
            	data:{
        			[name]:num,
        			videoId:videoId,
        			clickCount:clickCount,
        			action:"clickFavorite"
        		},
        		success:function(data){
        			if(data.code == 200){
        				selectVideoCount(videoId);
        				btns.eq(2).addClass("primary")
        			}
        		}
            })
        }

        // 取消收藏
        function unfavoriteVideo(name,num) {
            console.log("取消收藏 ☆");
            // 这里可以发送AJAX请求到后端
            const videoId = localStorage.getItem('pendingVideoId');
        	if (!videoId) {
                alert('视频ID不存在，操作失败');
                return;
            }
            console.log("取消收藏-1");
//            btns.eq(1).classList.add('liked');
            // 发送请求到后端...
            $.ajax({
            	type:"GET",
            	url:"updateVideoCount",
            	data:{
        			[name]:num,
        			videoId:videoId,
        			clickCount:clickCount,
        			action:"cancelClickFavorite"
        		},
        		success:function(data){
        			if(data.code == 409){
        				selectVideoCount(videoId);
        				btns.eq(2).removeClass("primary")
        			}
        		}
            })
        }
        
        
        
        
        function parseCountText(text) {
            // 提取数字部分（含小数）和单位
            const match = text.match(/[点赞,收藏]\s*\((\d+\.?\d*)(万?)\)/);
            if (!match) return 0;
            
            const num = parseFloat(match[1]);
            const unit = match[2];
            
            // 带"万"单位则乘以10000
            return unit === '万' ? num * 10000 : num;
        }
        
        addClickVideo(videoId);
        function addClickVideo(videoId){
        	$.ajax({
        		type:"GET",
        		data:{
        			videoId:videoId
        		},
        		url:"selectVideoCount.do",
        		success:function(data){
        			switchVideo(data)
        		}
        	})
        }
    
		  // 弹幕系统配置(渲染)
		  const danmakuConfig = {
			  container: '#danmakuContainer', // 视频容器
		       maxShow: 50,                  // 最大显示数量
		       speedRange: [3, 8],           // 速度范围(秒)
		       fontSizeRange: [14, 20],      // 字体大小范围(px)
		       verticalRange: [0.1, 0.9]     // 垂直显示范围(百分比)
		  };
		
		  // 初始化弹幕系统
		  function initDanmakuSystem(data) {
		    const container = $(danmakuConfig.container);
		    if (!data || !data.length) return;
		    
		    // 清空现有弹幕
		    container.find('.danmaku').remove();
		    // 逐个显示弹幕
		    data.forEach((item, index) => {
		      if (index >= danmakuConfig.maxShow) return;
		      // 控制弹幕出现间隔
		      setTimeout(() => createSingleDanmaku(item, container), index * 200);
		    });
		  }
		
		  //创建单个弹幕
		  function createSingleDanmaku(data, container) {
		    const { width, height } = container[0].getBoundingClientRect();
		    
		    // 生成随机样式
		    const style = {
		      top: getRandomInRange(height * danmakuConfig.verticalRange[0], 
		                           height * danmakuConfig.verticalRange[1]),
		      color: getRandomColor(),
		      speed: getRandomInRange(...danmakuConfig.speedRange),
		      fontSize: getRandomInRange(...danmakuConfig.fontSizeRange)
		    };
		    // 创建弹幕元素
		    const danmaku = $(`<div class="danmaku">${data.content}</div>`).css({
		      position: 'absolute',
		      left: '100%',
		      top: style.top + 'px',
		      color: style.color,
		      fontSize: style.fontSize + 'px',
		      whiteSpace: 'nowrap',
		      transition: `transform ${style.speed}s linear`,
		      transform: 'translateX(0)'
		    });
		    // 添加到容器
		    container.append(danmaku);
		    // 触发动画
		    requestAnimationFrame(() => {
		      danmaku.css('transform', `translateX(-${width + danmaku.width()}px)`);
		    });
		    // 动画结束后移除
		    setTimeout(() => danmaku.remove(), style.speed * 1000);
		  }
		
		  // 辅助函数
		  //生成[min, max)范围内的随机浮点数
		  function getRandomInRange(min, max) {
		    return Math.random() * (max - min) + min;
		  }
		
		  //生成随机的HSL格式颜色字符串
		  function getRandomColor() {
		    return `hsl(${Math.floor(Math.random() * 360)}, 100%, 75%)`;
		  }

	    showDanmu(videoId);
        // 显示弹幕
        function showDanmu(videoId){
        	$.ajax({
        		type:"GET",
        		url:"selectDanmu.do",
        		data:{
        			videoId:videoId
        		},
        		success:function(data){
        			initDanmakuSystem(data);
        		}
        	})
        }
       
        showUpInfo(videoId);
        // 显示up主信息
        function showUpInfo(upId){
        	let upname=$(".up-name a");
            let updesc=$(".up-desc");
        	$.ajax({
        		type:"POST",
        		url:"upandvideo.do",
        		data:{
        			upId:upId
        			
        		},
        		success:function(data){
        			console.log(data);
//        			console.log(data.data.length);
        			for(var i=0;i<data.data.length;i++){
        				upname.text(data.data[i].nickname);
            			updesc.text(`粉丝数：${data.data[i]}`);
        			}
        		}
        	})
        }
        
        
        
        
        $(document).ready(function() {
        	
//        	// 1. 缓存DOM元素
//            initDOMCache();
//            
//            // 2. 初始化各功能模块
//            initVideoPlayer();
//            initVideoControls();
//            initCommentSystem();
//            initUserAuth();
//            
//            // 3. 检查登录状态
//            observeLoginState();
//            
//            // 4. 更新UI状态
//            updateLoginStatus();
            // 全局变量定义
            let hideTimer;
            let isMenuVisible = false;
            
            // 检查用户登录状态
            function checkLoginStatus() {
                const isLoggedIn = localStorage.getItem('isLoggedIn') === 'true';
                if (isLoggedIn) {
                    // 显示头像，隐藏登录按钮
                    $('#login').hide();
                    $('#userAvatar').show();
                    
                    // 设置用户头像（50x50px）
                    const avatarUrl = localStorage.getItem('avatarUrl') || 'img/1.jpg';
                    $('#avatarImg').attr('src', avatarUrl).css('width', '50px').css('height', '50px');
                } else {
                    // 隐藏头像，显示登录按钮
                    $('#userAvatar').hide();
                    $('#login').show();
                    $('#userMenu').hide(); // 未登录时隐藏用户菜单
                }
            }
            
            // 更新评论按钮状态
            function updateCommentButtonState() {
                const isLoggedIn = localStorage.getItem('isLoggedIn') === 'true';
                const commentInput = $('.comment-input');
                const sendCommentBtn = $('#sendComment');
                
                if (sendCommentBtn) {
                    if (isLoggedIn) {
                        // 已登录：启用评论按钮，根据输入内容状态决定是否可点击
                        sendCommentBtn.prop('disabled', !commentInput.val().trim());
                        sendCommentBtn.toggleClass('disabled', !commentInput.val().trim());
                        sendCommentBtn.off('click', showLoginPopup); // 移除登录弹窗点击事件
                    } else {
                        // 未登录：禁用评论按钮并添加点击事件显示登录弹窗
                        sendCommentBtn.prop('disabled', true);
                        sendCommentBtn.addClass('disabled');
                        sendCommentBtn.on('click', showLoginPopup);
                    }
                }
            }
            
            // 显示/隐藏登录弹窗
            function showLoginPopup() {
                $('#loginOverlay').show();
                // 默认显示登录标签页
                showLoginTab();
            }

            function hideLoginPopup() {
                $('#loginOverlay').hide();
            }
            
            // 切换登录/注册标签页
            function showLoginTab() {
                $('.tab-content > div').hide();
                $('.tab').removeClass('active');
                $('.tab[data-tab="login"]').addClass('active');
                $('.tab-content[data-tab="login"]').show();
            }
            
            function showRegisterTab() {
                $('.tab-content > div').hide();
                $('.tab').removeClass('active');
                $('.tab[data-tab="register"]').addClass('active');
                $('.tab-content[data-tab="register"]').show();
            }
            
            // 监听登录状态变化
            function observeLoginState() {
                checkLoginStatus();
                updateCommentButtonState();
            }
            
            // 显示评论系统错误
            function showCommentSystemError(message) {
                const errorElement = document.createElement('div');
                errorElement.className = 'comment-system-error';
                errorElement.textContent = message;
                $('#commentContainer').append(errorElement);
            }
            
            // 绑定评论相关事件
            function bindCommentEvents() {
                // 评论提交事件已在initCommentSystem中绑定
            }
            
            // 初始化评论分页
            function initCommentPagination() {
                // 分页功能可在此处实现
            }
            
            // 加载评论
            function loadComments(page) {
                if (!videoId) return;
                
                // 显示加载中状态
                $('#commentList').html('<li class="loading-comment">加载评论中...</li>');
                

                 $.ajax({
                    url: `/bilibili0/comment.do?videoId=${videoId}&page=${page}`, // 根据实际情况修改URL
                    type: 'GET',
                    xhrFields: { withCredentials: true },
                    success: function(response) {
                        if (response.success) {
                            const comments = response.data;
                            // 渲染评论
                            renderComments(comments);
                        } else {
                            alert('加载评论失败: ' + response.message);
                            console.error('服务器错误:', response.message);
                        }
                    },
                    error: function(error) {
                        console.error('评论请求失败:', error);
                        alert('网络错误，请稍后重试');
                    }
                });
            }
            
            // 渲染评论
            function renderComments(comments) {
                const commentList = $('#commentList');
                commentList.empty();
                
                if (comments.length === 0) {
                    commentList.append('<li class="empty-comment">暂无评论，快来发表你的看法吧！</li>');
                    return;
                }
                
                comments.forEach(comment => {
                    const commentEl = createCommentElement(comment);
                    commentList.append(commentEl);
                    
                    // 绑定回复按钮事件
                    $(commentEl).find('.comment-reply').on('click', function() {
                        const commentId = $(commentEl).data('comment-id');
                        showReplyForm(commentId, commentEl);
                    });
                });
                initCommentInteractions();
            }
            
            // 创建评论元素
            function createCommentElement(comment) {
                const li = document.createElement('li');
                li.className = 'comment-item';
                li.dataset.commentId = comment.commentId;
                
                // 安全设置头像和用户名
                li.innerHTML = `
                    <div class="comment-avatar">
                        < img src="${escapeHTML(comment.userAvatar)}" alt="${escapeHTML(comment.userName)}">
                    </div>
                    <div class="comment-content">
                        <div class="comment-header">
                            <span class="comment-user"></span>
                            <span class="comment-time"></span>
                        </div>
                        <div class="comment-body"></div>
                        <div class="comment-footer">
                            <button class="comment-like">
                                <i class="fas fa-thumbs-up"></i>
                                <span class="like-count">${comment.likeCount}</span> 点赞
                            </button>
                            <button class="comment-reply">
                                <i class="fas fa-reply"></i> 回复
                            </button>
                        </div>
                        <div class="reply-list"></div>
                    </div>
                `;
                
                // 安全设置用户名和时间
                li.querySelector('.comment-user').textContent = comment.userName;
                li.querySelector('.comment-time').textContent = formatCommentTime(comment.createTime);
                
                // 安全设置评论内容
                li.querySelector('.comment-body').textContent = comment.content;
                
                return li;
            }
            
            // 显示回复表单
            function showReplyForm(commentId, commentEl) {
                // 先移除已有的回复表单
                $(commentEl).find('.reply-form').remove();
                
                // 创建回复表单
                const replyForm = `
                    <div class="reply-form">
                        <textarea class="reply-input" placeholder="写下你的回复..."></textarea>
                        <button class="reply-submit" onclick="submitReply(${commentId}, this)">回复</button>
                    </div>
                `;
                
                // 添加到评论元素中
                $(commentEl).find('.comment-footer').after(replyForm);
                
                // 聚焦到输入框
                $(commentEl).find('.reply-input').focus();
            }
            
            // 提交回复
            function submitReply(commentId, button) {
            const replyForm = $(button).closest('.reply-form');
            const replyInput = replyForm.find('.reply-input');
            const replyContent = replyInput.val().trim();

            if (!replyContent) {
                alert('回复内容不能为空');
                return;
            }

            const isLoggedIn = localStorage.getItem('isLoggedIn') === 'true';
            if (!isLoggedIn) {
                showLoginPopup();
                return;
            }

            const userName = localStorage.getItem('username');
            const userAvatar = localStorage.getItem('avatarUrl') || 'img/1.jpg';
            const userId = localStorage.getItem('userId');
//            

            const newReply = {
                userId: parseInt(userId),
                videoId: videoId,
                commentId: commentId,
                userName: userName,
                userAvatar: userAvatar,
                content: replyContent,
                createTime: new Date().toISOString()
            };

            $.ajax({
                url: '/bilibili0/comment.do',
                type: 'POST',
                contentType: 'application/json;charset=utf-8',
                data: JSON.stringify(newReply),
                xhrFields: { withCredentials: true },
                success: function(response) {
                    if (response.success) {
                        const serverReply = response.data;
                        
                        const newReply = {
                            id: serverReply.replyId,
                            commentId: serverReply.commentId,
                            userId: serverReply.userId,
                            userName: userName,
                            userAvatar: userAvatar,
                            content: serverReply.content,
                            createTime: serverReply.createTime
                        };
                        updateReplyList(button, newReply);
                        replyInput.val('');
                        replyForm.remove();
                        alert('回复提交成功！');
                    } else {
                        alert('回复提交失败: ' + response.message);
                        console.error('服务器错误:', response.message);
                    }
                },
                error: function(error) {
                    console.error('回复请求失败:', error);
                    alert('网络错误，请稍后重试');
                }
            });
        }
            function updateReplyList(button, newReply) {
            const commentEl = $(button).closest('.comment-item');
            const replyList = commentEl.find('.reply-list');
            if (replyList.length === 0) {
                commentEl.find('.comment-content').append('<div class="reply-list"></div>');
                const replyList = commentEl.find('.reply-list');
                addReplyToUI(replyList, newReply);
            } else {
                addReplyToUI(replyList, newReply);
            }
        }
            // 添加回复到UI
            function addReplyToUI(replyList, reply) {
                const replyItem = document.createElement('div');
                replyItem.className = 'reply-item';
                
                // 安全设置回复头部
                const header = document.createElement('div');
                header.className = 'reply-header';
                
                const userSpan = document.createElement('span');
                userSpan.className = 'reply-user';
                userSpan.textContent = reply.userName;
                
                const timeSpan = document.createElement('span');
                timeSpan.className = 'reply-time';
                timeSpan.textContent = formatCommentTime(reply.createTime);
                
                header.appendChild(userSpan);
                header.appendChild(timeSpan);
                
                // 安全设置回复内容
                const body = document.createElement('div');
                body.className = 'reply-body';
                body.textContent = reply.content;
                
                // 组装回复元素
                replyItem.appendChild(header);
                replyItem.appendChild(body);
                replyList.prepend(replyItem);
            }
            
            function escapeHTML(str) {
                if (!str) return '';
                return str
                    .replace(/&/g, '&amp;')
                    .replace(/</g, '&lt;')
                    .replace(/>/g, '&gt;')
                    .replace(/"/g, '&quot;')
                    .replace(/'/g, '&#039;');
            }
            
            let currentReplyTo = null;

            function handleCommentSubmit() {
                const isLoggedIn = localStorage.getItem('isLoggedIn') === 'true';
                if (!isLoggedIn) {
                    showLoginPopup();
                    return;
                }
                
                const content = $('.comment-input').val().trim();
                if (!content) return;
                

                const userId = localStorage.getItem('userId');
                console.log(userId)
                const userName = localStorage.getItem('username');
                const userAvatar = localStorage.getItem('avatarUrl') || 'img/1.jpg';
                let parentId = null;
                //如果是回复评论，从currentReplyTo获取值
               if (currentReplyTo !== null) {
        			parentId = currentReplyTo;
                   currentReplyTo = null; // 重置回复目标
               }
                
                // 创建新评论 - 注意这里的字段名要和服务器端Comment类的属性名匹配
                const commentData = {
                    userId: parseInt(userId),
                    videoId: videoId,
                    userName:userName,
                    userAvatar:userAvatar,
                    content: content,
                    parentId: 0, // 主评论默认为0
                    createTime: new Date().toISOString() // 服务器可能会覆盖这个值
                };
               
                // 发送评论请求到服务器
                $.ajax({
                    url: '/bilibili0/comment.do',
                    type: 'POST',
                    contentType: 'application/json;charset=utf-8',
                    data: JSON.stringify(commentData),
                    xhrFields: { withCredentials: true },
                    success: function(response) {
                        if (response.success) {
                            // 服务器成功接收评论
                            const serverComment = response.data;
                            if (serverComment.likeCount === undefined) {
                                console.warn('服务器返回的评论缺少 likeCount 字段，使用默认值 0');
                                serverComment.likeCount = 0;
                            }
                            // 创建前端评论元素
                            const newComment = {
                                id: serverComment.commentId, // 使用服务器返回的ID
                                videoId: serverComment.videoId,
                                userId: serverComment.userId,
                                userName: userName,
                                userAvatar: userAvatar,
                                content: serverComment.content,
                                createTime: serverComment.createTime,
                                likeCount: serverComment.likeCount || 0,
                                replies: []
                            };
                            
                            // 前端更新评论列表
                            const commentList = $('#commentList');
                            const commentEl = $(createCommentElement(newComment));
                            $('#commentList').prepend(commentEl);
                            commentList.prepend(commentEl);
                            $('.comment-input').val('');
                            updateCommentButtonState();
                            
                            commentEl.attr('data-comment-id', newComment.id);

                            // 重新绑定事件
                            initCommentInteractions();
                            
                            alert('评论提交成功！');
                        } else {
                            // 服务器返回错误
                            alert('评论提交失败: ' + response.message);
                            console.error('服务器错误:', response.message);
                        }
                    },
                    error: function(error) {
                        // 网络错误或服务器异常
                        console.error('评论请求失败:', error);
                        alert('网络错误，请稍后重试');
                    }
                });
            }
            
            // 格式化评论时间
            function formatCommentTime(dateString) {
                const date = new Date(dateString);
                const now = new Date();
                const diffMs = now - date;
                const diffSec = Math.floor(diffMs / 1000);
                const diffMin = Math.floor(diffSec / 60);
                const diffHour = Math.floor(diffMin / 60);
                
                if (diffSec < 60) return "刚刚";
                if (diffMin < 60) return `${diffMin}分钟前`;
                if (diffHour < 24) return `${diffHour}小时前`;
                return `${date.getMonth() + 1}月${date.getDate()}日`;
            }
            
            // 初始化点赞和回复功能
            function initCommentInteractions() {
                const primaryColor = '#fb7299';
                const animationClass = 'count-animation';
                
                // 事件委托绑定点赞按钮
                $(document).off('click', '.comment-like').on('click', '.comment-like', function() {
                   
                    const commentId = $(this).closest('[data-comment-id]').data('comment-id');
            
                    if (!commentId) {
                        console.error('无法获取评论ID');
                        return;
                    }
            
                    const countEl = $(this).find('.like-count');
                    const currentCount = parseInt(countEl.text());

                   
                     $(this).toggleClass('active');
                    if ($(this).hasClass('active')) {
                        countEl.text(currentCount + 1);
                        countEl.addClass(animationClass);
                        setTimeout(() => countEl.removeClass(animationClass), 500);
                    } else {
                        if (currentCount > 0) countEl.text(currentCount - 1);
                    }
                    $.ajax({
                        url: `/bilibili0/comment.do?action=like`,
                        method: 'GET',
                         data:{ 
                             commentId: commentId,
                             userId: localStorage.getItem('userId')
                          }, // 序列化为JSON字符串
                        xhrFields: { withCredentials: true }, 
                        crossDomain: true, 
                        success: function(response) {
                            if (!response.success) {
                                // 如果后端处理失败，回滚UI
                                console.error('点赞操作失败:', response.message);
                                $(this).toggleClass('active'); // 恢复状态
                                countEl.text(currentCount);    // 恢复计数
                            }
                        }.bind(this), // 绑定this，确保回调中能访问当前元素
                        error: function(error) {
                            console.error('网络错误:', error);
                            // 回滚UI
                            $(this).toggleClass('active');
                            countEl.text(currentCount);
                        }.bind(this)
                    });

                });
                
               
                // 事件委托绑定回复按钮
                $(document).off('click', '.comment-reply').on('click', '.comment-reply', function() {
                    $(this).css({
                        'background-color': primaryColor,
                        'color': 'white'
                    });
                    
                    setTimeout(() => {
                        $(this).css({
                            'background-color': '',
                            'color': ''
                        });
                    }, 3000);
                    
                    const commentId = $(this).closest('.comment-item').data('comment-id');
                    showReplyForm(commentId, $(this).closest('.comment-item'));
                });
            }
            
            // 登录成功处理
            function onLoginSuccess(data) {
                // 保存登录状态
            	console.log(data)
                localStorage.setItem('isLoggedIn', 'true');
                localStorage.setItem('username', data.username);
                localStorage.setItem('avatarUrl', data.avatarUrl || 'img/default-avatar.png');
                localStorage.setItem('userId', data.userId.toString());
                
                // 关键：验证Session是否创建成功
//                $.ajax({
//                    url: '/bilibili0/checkSession.do',
//                    xhrFields: { withCredentials: true },
//                    success: function(checkResponse) {
//                        if (!checkResponse.success) {
//                            console.error('登录状态同步失败，Session未创建');
//                            // 清除前端状态，提示用户重新登录
//                            localStorage.removeItem('isLoggedIn');
//                            alert('登录异常，请重新登录');
//                        }
//                    }
//                });

                // 更新 UI
                checkLoginStatus();
                
                // 跳转到用户页面
                window.location.href = '/bilibili0/index.html';
            }
            
            // 退出登录
            function logout() {
                if (!confirm('确定要退出登录吗？')) return;
                
                $.ajax({
                    type: 'POST',
                    url: '/bilibili0/logout.do',
                    xhrFields: { withCredentials: true },
                    crossDomain: true,
                    success: function(data) {
                        console.log('退出登录成功:', data);
                        alert('您已退出登录');
                        
                        // 清除本地存储
                        localStorage.removeItem('isLoggedIn');
                        localStorage.removeItem('username');
                        localStorage.removeItem('avatarUrl');
                        localStorage.removeItem('userId');
                        
                        // 更新UI
                        $('#login').show();
                        $('#userAvatar').hide();
                        $('#userMenu').hide();
                        
                        // 刷新页面
                        window.location.reload();
                    },
                    error: function(jqXHR, textStatus, errorThrown) {
                        if (jqXHR.status === 404) {
                            alert('退出登录失败：请求地址不存在');
                        } else if (jqXHR.status === 500) {
                            alert('退出登录失败：服务器内部错误');
                        } else {
                            alert('退出登录失败：' + textStatus + ', ' + errorThrown);
                        }
                        console.log('完整错误信息:', jqXHR);
                    }
                });
            }
            
            // 头像菜单交互
            function showMenu() {
                clearTimeout(hideTimer);
                const avatarPos = $('#userAvatar').offset();
                const avatarHeight = $('#userAvatar').outerHeight();
                
                $('#userMenu').css({
                    top: avatarPos.top + avatarHeight + 10,
                    left: avatarPos.left,
                    visibility: 'visible',
                    opacity: 1,
                    display: 'block'
                });
                isMenuVisible = true;
            }
            
            function hideMenu() {
                hideTimer = setTimeout(() => {
                    $('#userMenu').css({
                        visibility: 'hidden',
                        opacity: 0
                    });
                    isMenuVisible = false;
                }, 300);
            }
            
            // 登录表单提交
            $('#loginForm').on('submit', function(e) {
                e.preventDefault();
                const username = $('#username').val();
                const password = $('#password').val();
                const errorEl = $('#errorMsg');
                
                // 验证输入
                if (!username || !password) {
                    errorEl.text('请填写用户名和密码');
                    return;
                }
                
                $.ajax({
                    type: 'POST',
                    url: '/bilibili0/login.do',
                    data: { username, password },
                    dataType: 'json',
                    xhrFields: { withCredentials: true },
                    crossDomain: true,
                    success: function(data) {
                    	
                    	// 验证数据格式
                        if (typeof data !== 'object' || data === null) {
                            console.error('登录响应格式错误:', data);
                            errorEl.text('服务器响应格式错误');
                            return;
                        }
                    	
                        console.log('登录响应:', data);
                        if (data.success && data.data) {
                            onLoginSuccess(data.data); // 传入完整用户数据
                            alert('登录成功！');
                            hideLoginPopup();
                        } else {
                            errorEl.text(data.message || '登录失败，请重试');
                        }
                    },
                    error: function(jqXHR, textStatus, errorThrown) {
                    	 console.error('请求失败:', textStatus, errorThrown);
                         console.error('响应状态码:', jqXHR.status);
                         console.error('响应内容:', jqXHR.responseText);
                         
                         // 根据状态码显示不同的错误信息
                         if (jqXHR.status === 400) {
                             errorEl.text('请求格式错误');
                         } else if (jqXHR.status === 401) {
                             errorEl.text('未授权，请登录');
                         } else if (jqXHR.status === 500) {
                             errorEl.text('服务器内部错误');
                         } else {
                             errorEl.text('网络错误，请稍后重试');
                         }
                    }
                });
            });
            
            // 注册表单提交
            $('#registerForm').on('submit', function(e) {
                e.preventDefault();
                
                const regUsername = $('#reg-username').val().trim();
                const regEmail = $('#reg-email').val().trim();
                const regPassword = $('#reg-password').val().trim();
                const errorEl = $('#reg-errorMsg');
                
                // 获取性别
                const regGender = $('input[name="gender"]:checked').val() || '';
                // 获取真实姓名
                const nickName = $("#reg-nickName").val();
                
                // 获取出生日期
                const year = $('#reg-year').val();
                const month = $('#reg-month').val();
                const day = $('#reg-day').val();
                const regBirthday = year && month && day ? `${year}-${month}-${day}` : '';
                
                // 验证表单
                if (!regGender) {
                    errorEl.text('请选择性别');
                    return;
                }
                
                if (!regBirthday) {
                    errorEl.text('请选择完整的出生日期');
                    return;
                }
                
                if (isNaN(Date.parse(regBirthday))) {
                    errorEl.text('出生日期无效');
                    return;
                }
                
                if (!regUsername || !regEmail || !regPassword) {
                    errorEl.text('请填写所有注册信息');
                    return;
                }
                
                if (regPassword.length < 6) {
                    errorEl.text('密码至少需要6位');
                    return;
                }
                
                // 发送注册请求
                $.ajax({
                    type: 'POST',
                    url: '/bilibili0/register.do',
                    data: {
                        username: regUsername,
                        gender: regGender,
                        birthday: regBirthday,
                        email: regEmail,
                        nickName: nickName,
                        password: regPassword
                    },
                    success: function(data) {
                        console.log('注册响应:', data);
                        if (data.success) {
                            alert('注册成功！请登录');
                            $('[data-tab="login"]').trigger('click');
                            $('#registerForm')[0].reset();
                        } else {
                            errorEl.text(data.message || '注册失败，请重试');
                        }
                    },
                    error: function(error) {
                        console.error('注册请求失败:', error);
                        errorEl.text('网络错误，请稍后重试');
                    }
                });
            });
         
            // 初始化评论系统
            function initCommentSystem() {
                // 获取视频ID - 优先从隐藏元素获取

                
                // 错误处理：检查视频ID是否存在
                if (!videoId) {
                    console.error('初始化评论系统失败：未找到视频ID');
                    showCommentSystemError('视频ID不存在，无法加载评论');
                    return;
                }
                
                console.log('初始化评论系统，视频ID:', videoId);
                
                // 绑定评论相关事件
                bindCommentEvents();
                
                // 初始化评论分页
                initCommentPagination();
                
                // 加载第一页评论
                loadComments(1);
                
                // 检查登录状态并更新评论按钮
                updateCommentButtonState();
                
                // 绑定评论输入框事件
                $('.comment-input').on('input', updateCommentButtonState);
                
                // 绑定评论提交按钮
                $('#sendComment').on('click', handleCommentSubmit);
            }
            function hideLoginPopup() {
                $('#loginOverlay').hide();
            }
            // 绑定UI事件
            function bindUIEvents() {
                // 登录按钮点击事件
                $('#login').on('click', showLoginPopup);
                
                // 登录弹窗关闭按钮
               $(document).on('click', '#closeLoginPopup', hideLoginPopup);
                
                // 登录/注册标签页切换
                $('#loginBtn').on('click', showLoginTab);
                $('#registerBtn').on('click', showRegisterTab);
                
                // 头像和菜单交互
                $('#userAvatar').on('mouseenter', showMenu);
                $('#userAvatar').on('mouseleave', function(e) {
                    if (!$('#userMenu').is(e.relatedTarget) && !$('#userMenu').has(e.relatedTarget).length) {
                        hideMenu();
                    }
                });
                
                $('#userMenu').on('mouseenter', function() {
                    clearTimeout(hideTimer);
                });
                
                $('#userMenu').on('mouseleave', function(e) {
                    if (!$('#userAvatar').is(e.relatedTarget) && !$('#userAvatar').has(e.relatedTarget).length) {
                        hideMenu();
                    }
                });
             // 头像点击事件 - 跳转到用户页面
                $('#userAvatar').click(function() {
                    window.location.href = '/bilibili/personalCenter.html';
                });
                // 退出登录按钮
                $('#logoutBtn').on('click', logout);
            }
            
            // 初始化日期选择器
            function initDateSelector() {
                const yearSelect = $('#reg-year');
                const monthSelect = $('#reg-month');
                const daySelect = $('#reg-day');
                
                // 初始化年份
                const currentYear = new Date().getFullYear();
                for (let i = currentYear - 100; i <= currentYear; i++) {
                    yearSelect.append(`<option value="${i}">${i}年</option>`);
                }
                
                // 初始化月份
                for (let i = 1; i <= 12; i++) {
                    monthSelect.append(`<option value="${i}">${i}月</option>`);
                }
                
                // 月份变化时更新日期
                monthSelect.on('change', updateDays);
                yearSelect.on('change', updateDays);
                
                function updateDays() {
                    const year = parseInt(yearSelect.val());
                    const month = parseInt(monthSelect.val());
                    
                    // 清空日期选择器
                    daySelect.empty();
                    
                    if (!year || !month) return;
                    
                    // 获取当月天数
                    const daysInMonth = new Date(year, month, 0).getDate();
                    
                    // 添加日期选项
                    for (let i = 1; i <= daysInMonth; i++) {
                        daySelect.append(`<option value="${i}">${i}日</option>`);
                    }
                }
            }
            
            // 初始化页面
            function initPage() {
                // 检查登录状态
                checkLoginStatus();
                
                // 绑定UI事件
                bindUIEvents();
                
                // 初始化日期选择器
                initDateSelector();
                
                // 初始化评论系统
                initCommentSystem();
            }
            
            // 页面加载完成后执行初始化
            initPage();
            // 标签页切换逻辑
            $('.tab').on('click', function() {
                const tabName = $(this).attr('data-tab');

                // 移除所有标签页的活跃状态
                $('.tab').removeClass('active');
                $('.tab-content').removeClass('active');

                // 添加当前标签页的活跃状态
                $(this).addClass('active');
                $(`.tab-content[data-tab="${tabName}"]`).addClass('active');
                
                // 更新角落图片
                if (tabName === 'login') {
                    $('#img1, #img2').removeClass('hide');
                    $('#img3, #img4').addClass('hide');
                } else {
                    $('#img1, #img2').addClass('hide');
                    $('#img3, #img4').removeClass('hide');
                }
            });
            // 全局函数暴露
            window.showLoginPopup = showLoginPopup;
            window.hideLoginPopup = hideLoginPopup;
            window.logout = logout;
            window.submitReply = submitReply;
        });
        
        
        
        //localStorage.removeItem('pendingVideoId');